#ifndef __GE_EFFECTREGISTRY_H__
#define __GE_EFFECTREGISTRY_H__

#include "GE_Base.h"
namespace Syp
{
///Effect Registry is a repository which contains a list of all Effects available and ensures that all effects available for use are unique by name. 
class SYPAPI EffectRegistry : public UniqueRegistry<Effect>
{
public:
	///Initialises the EffectRegistry
	static void initialise();
	///Returns a reference to the EffectRegistry
	static EffectRegistry& getRegistry();
	///Releases the EffectRegistry
	static void release();
	///Register a Effect
	///Upon adding, the effect calls all contained Passes runnableOnHardware() method to determine if the hardware is capable of showing the Effect. Returns true if hardware is capable else false. If there is already an Effect with a similar name and a higher quality rating, returns false.
	bool addEffect(Effect* p);
	///Dumps available info to Log file.
	void dumpInfo();
private:
	static EffectRegistry* pr;

};

}
#endif //__GE_EFFECTREGISTRY_H__
